π [νμ μΌλ‘ κ²¬κ³ νκ² λ€νμ±μΌλ‘ μ μ°νκ²] μ± μ λͺ© μ΄ν΄νκΈ°
νμ μ€ν¬λ¦½νΈ κ΄μ μΌλ‘ μ΄ν΄ν΄ 보μ!
μ΅κ·Ό μ΄μ νλμ΄ μμ±νμ Type-Driven-Development ν¬μ€ν μ μ½μμ΅λλ€.
ν₯λ―Έλ‘μ κ³ νΈκΈ°μ¬μ΄ μκ²Όμ΅λλ€.
κ·Έλμ λκΈμ λ¨κ²Όμ΅λλ€. μμ±νμ λ΄μ©μ νμ΅νκΈ° μν΄μ 무μμ νμ΅ν΄μΌ νλμ§μ λν΄μμ.
νμ μΌλ‘ κ²¬κ³ νκ² λ€νμ±μΌλ‘ μ μ°νκ²λΌλ μ± μ μΆμ²ν΄μ£Όμ ¨κ³ , λ°λ‘ ꡬ맀ν΄μ λ€μλ λΆν° μ½μμ΅λλ€.
μ΄λ² ν¬μ€ν μμλ μ± μ μ½κ³ μ± μ λͺ©μ μλ―Έλ₯Ό μ 리ν΄λ³΄μμ΅λλ€.
μ± μμλ νΉμ μΈμ΄ κΈ°λ° μ€λͺ μ΄ μλ, λ€μν μΈμ΄μ μμλ₯Ό ν΅ν΄ μ€λͺ μ μ 곡νμ§λ§
μ λ μ΅μν νμ μ€ν¬λ¦½νΈλ‘ μ 리ν΄λ³΄μμ΅λλ€.
μ± λ΄μ© μ΄μΈμλ μμ¬ μμ± κ²μ¬μ νμ μ€ν¬λ¦½νΈ λ€νλ©ν°λ¦¬μμ λ³Έ ν₯λ―Έλ‘μ΄ λ΄μ©μ μΌλΆ λ΄μμ΅λλ€.
μ¬λ¬λΆλ ν₯λ―Έλ‘μ μΌλ©΄ μ’κ² μ΅λλ€. :)
λͺ©μ°¨
- νμ μΌλ‘ κ²¬κ³ νκ²
- λ€νμ±μΌλ‘ μ μ°νκ²
- λ€νμ±μ΄λ 무μμΌκΉ?
- μλΈνμ μ΄λ 무μμΌκΉ?
- μλΈνμ κ΄κ³λ₯Ό νμ κ²μ¬κΈ°μ μ리λ extends ν€μλ
- μλΈνμ μ μν λ€νμ±μ΄λ 무μμΌκΉ?
- ꡬ쑰μ νμ΄νμ΄λ 무μμΌκΉ?
- μμ¬ μμ± κ²μ¬λ 무μμΌκΉ?
- νμ μ€ν¬λ¦½νΈ νμ λ°°κ²½μμ μ΄ν΄λ³Έ ꡬ쑰μ νμ΄ν
- λ§λ¬΄λ¦¬
νμ μΌλ‘ κ²¬κ³ νκ²
νμ μ μ μ νμ μΈμ΄λ₯Ό μ¬μ©ν΄λ³Έ λΆλ€μ΄λΌλ©΄ λꡬλ κ²½νμ μ΄λ€κ²μΈμ§ κ°μ΄ μ€μ€κ²λλ€.
κ·Έλ λ€ νλλΌλ νμ μΌλ‘ κ²¬κ³ νκ² λΌλ μλ―Έλ μ΄ν΄λ³΄κΈ° μν΄μ νμ μ λν μ μλΆν° μμνλκ² μ’μκ² κ°μ΅λλ€.
νμ μ΄λ 무μμΌκΉ?
νμ μ΄λ 무μμΌκΉμ?
μ μκ° μ΄μΌκΈ°νλ°λ λ€μκ³Ό κ°μ΅λλ€.
κ°μ΄ κ°μ§ λ₯λ ₯μ λ°λΌ λΆλ₯ ν κ².
λ₯λ ₯μ΄λ λ§μ΄ μΆμμ μΌλ‘ λκ»΄μ§ μ μμκ² κ°μ΅λλ€.
ꡬ체μ μΈ μμλ₯Ό ν΅ν΄ μ΄ν΄ν΄ λ³΄κ² μ΅λλ€.
λ¬Έμλ μ΄λ€ λ₯λ ₯μ κ°μ§κΉμ?
'abc'λ μλ°μ€ν¬λ¦½νΈμμ 리ν°λ΄ νκΈ°λ²μ ν΅ν΄ μμ±ν λ¬Έμμ λλ€.
λ¬Έμλ νλ‘ν νμ μμ(μ°Έμ‘°)μ ν΅ν΄ 'at', 'substring', 'match' λ±μ λ₯λ ₯μ κ°μ΅λλ€.
λ°°μ΄μ μ΄λ€ λ₯λ ₯μ κ°μ§κΉμ?
[1,2,3]λ μλ°μ€ν¬λ¦½νΈμμ 리ν°λ΄ νκΈ°λ²μ ν΅ν΄ μμ±ν λ°°μ΄μ λλ€.
λ°°μ΄μ νλ‘ν νμ μμ(μ°Έμ‘°)μ ν΅ν΄ 'map', 'filter', 'reduce' λ±μ λ₯λ ₯μ κ°μ΅λλ€.
νμ§λ§ κ°μ΄ κ°μ§ λ₯λ ₯μ λ²μ΄λ μΌμ μν€λ©΄ νμ μ€λ₯κ° λ°μν©λλ€.
'abc'.filter() // type error
[1,2,3].substring() // type error
μ 리νμλ©΄ νμ μ κ°μ λ₯λ ₯μ΄κ³ , λ₯λ ₯μ λ²μ΄λ μΌμ μν€λ©΄ νμ μ€λ₯κ° λ°μν©λλ€.
νμ μΌλ‘ κ²¬κ³ νκ²λ 무μμΌκΉ?
λ²κ·Έμ λλ€μλ νμ μ€λ₯μ λλ€.
κ·Έλ λ€λ©΄ νμ μ€λ₯λ₯Ό μ΅λν μ€μ΄λκ²μ΄ μ€μνκ² μ΅λλ€.
Airbnb
λ νμ
μ€ν¬λ¦½νΈ λμ
μΌλ‘ λ²κ·Έμ 38%
λ₯Ό μλ°©ν μ μμμ΅λλ€.
μ΄λ»κ² νμ μ€ν¬λ¦½νΈ λμ λ§μΌλ‘ λ²κ·Έλ₯Ό μ€μΌμ μμλ κ²μΌκΉμ?
νμ μ€ν¬λ¦½νΈλ νμ κ²μ¬κΈ°λ₯Ό ν΅ν΄ μ°λ¦¬κ° μμ±ν μμ€μ½λμ κ°μ λ₯λ ₯μ λ²μ΄λ μ¬μ©μ¬λΆλ₯Ό κ²μ¬νμ¬,
κ°μ λ₯λ ₯μ λ²μ΄λ μΌμ μμΌ°λ€λ©΄ μ»΄νμΌμ κ±°λΆ ν©λλ€.
μ μ νμ μΈμ΄μΈ νμ μ€ν¬λ¦½νΈμ λμ νμ μΈμ΄μΈ μλ°μ€ν¬λ¦½νΈλ₯Ό λΉκ΅ν΄μ μλ₯Όλ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.
μλ°μ€ν¬λ¦½νΈλ‘ μμ±λ μ½λλ νμ μλ¬κ° λ°νμμμ λ°μνλ λ°λ©΄,
νμ μ€ν¬λ¦½νΈλ‘ μμ±λ μ½λλ νμ μλ¬λ₯Ό μ»΄νμΌμ(μ»΄νμΌ μ΅μ μ ν΅ν΄ μ νν μ μκΈ°λ ν©λλ€) λ°κ²¬ν μ μμ΅λλ€.
μ¦ μ μ νμ μΈμ΄μΈ νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ©΄ νμ μ€λ₯λ₯Ό μ»΄νμΌ λ¨κ³μμ 미리 λ°κ²¬νκ³ μμ ν μ μμ΅λλ€.
μ΄λ‘ μΈν΄ λ°νμμμ λ°μν μ μλ νμ κ΄λ ¨ μ€λ₯λ₯Ό μ¬μ μ λ°©μ§ν μ μκ²λμ΄,
κ²°κ³Όμ μΌλ‘ λ κ²¬κ³ ν μννΈμ¨μ΄λ₯Ό κ°λ°ν μ μμ΅λλ€.
νμ μ€ν¬λ¦½νΈμ νμ λ°°κ²½
2010λ μ¦μμ κΈ°λ³Έ λΈλΌμ°μ λ₯Ό μΈν°λ· μ΅μ€νλ‘μ΄μμ ν¬λ‘¬μΌλ‘ λ³κ²½νλ κΈ°μ΅μ΄ λ©λλ€.
λΉμ μΈν°λ· μ΅μ€νλ‘μ΄λ μΉ μ¬μ΄νΈκ° λ¨κΈ°κΉμ§ μ μ΄λ₯Ό κΈ°λ€λ €μΌ νλλ°, ν¬λ‘¬μ κ·Έμ λΉν΄ μμ£Ό λΉ λ¦ΏλΉ λ¦Ώνμ΅λλ€.
ν¬λ‘¬μ v8 μμ§μΌλ‘ μλ°μ€ν¬λ¦½νΈ μ€ν μλ κ°μ μ ν¬ν¨ν μ λ°μ μΈ μν€ν μ² κ°μ μΌλ‘ μ΄λ₯Ό κ°λ₯μΌ νμ΅λλ€.
λ§μ΄ν¬λ‘μννΈλ μλ°μ€ν¬λ¦½νΈ μμ§μ λΉ λ₯Έ μλ λλΆμ μλ°μ€ν¬λ¦½νΈλ‘ μμ±λ λ ν° μννΈμ¨μ΄μΈ vscode
λ₯Ό λ§λ€κΈ° μμνμ΅λλ€.
κ·Έλ°λ° μ½ 7μ² μ€μ μ½λλ₯Ό μμ±ν λ λ¬Έμ κ° λ°μνμ΅λλ€.
λ²κ·Έλ₯Ό μ°Ύλ λ° νλμ μ΄ κ±Έλ¦¬λ κ²μ΄μμ΅λλ€.
νμ
μ λ³΄κ° μκΈ°μ λ°νμμμ λ²κ·Έλ₯Ό μ°ΎμμΌ νκ³ λλ²κ±°
μ μμ‘΄ν΄μΌλ§ νμ΅λλ€.
κ·Έλμ λ°νμμ΄ μλ μ»΄νμΌ λ¨κ³μμ λ²κ·Έλ₯Ό μ°Ύμ μ μλλ‘ μ μ νμ μΈμ΄μΈ νμ μ€ν¬λ¦½νΈλ₯Ό κ°λ°νκΈ° μμνμ΅λλ€.
λ€νμ±μΌλ‘ μ μ°νκ²
μ± μμλ 'λ€νμ±μΌλ‘ μ μ°νκ²'λ₯Ό μ€λͺ νκΈ° μν΄ λ€μ μ±ν°λ€λ‘ ꡬμ±λμ΄ μμ΅λλ€.
- μλΈνμ
μ μν λ€νμ±
- 맀κ°λ³μμ μν λ€νμ±
- λ λ€νμ±μ λ§λ¨
- μ€λ²λ‘λ©μ μν λ€νμ±
ν΄λΉ ν¬μ€ν μμλ κ°μ₯ κΈ°λ³Έμ μΈ μλΈνμ μ μν λ€νμ±μ μ΄μΌκΈ° νκ³ μ ν©λλ€.
λ§μ°¬κ°μ§λ‘ λ€νμ±μ μ μλΆν° μμν΄λ³΄κ² μ΅λλ€.
λ€νμ±μ΄λ 무μμΌκΉ?
λ€νμ±μ΄λ 무μμΌκΉμ?
μ μλ λ€μκ³Ό κ°μ΄ μ€λͺ ν©λλ€.
ν κ°μ²΄κ° μ¬λ¬ νμ
μ μνλ κ².
ν κ°μ²΄κ° μ¬λ¬ νμ μ μνκΈ° μν΄μ μ μ νμ μΈμ΄κ° μ 곡νλ κΈ°λ₯μ€ νλκ° μλΈνμ μ μν λ€νμ±μ λλ€.
μλ‘μ΄ μ©μ΄κ° λμλ€μ.
κ³μν΄μ μλΈνμ μ μμλ³΄κ² μ΅λλ€.
μλΈνμ μ΄λ 무μμΌκΉ?
μλΈνμ μ 무μμΌκΉμ?
μ μλ λ€μκ³Ό κ°μ΄ μ€λͺ ν©λλ€.
μλΈνμ μ 'Aλ Bμ΄λ€'μ κ΄κ³λ₯Ό λ§μ‘±νλκ²μ λ»ν©λλ€.
'νμμ μ¬λμ΄λ€.'λΌλ λ¬Έμ₯μ 'Aλ Bμ΄λ€.' κ΄κ³λ₯Ό λ§μ‘±νλ―λ‘
'νμμ μ¬λμ μλΈνμ μ΄λ€.' λ‘ λ°κΏλ§ν μ μμ΅λλ€.
μ± μμλ μλΉμ μμλ‘ λλλ€.
μλΉμ μ¬λμ΄ μ μ₯ν μ μμ΅λλ€. νμλ μ¬λμ΄λ―λ‘ μλΉμ μ μ₯ν μ μμ΅λλ€.
νμ§λ§ νμλ§ μ μ₯ν μ μλ μλΉμ μ¬λμ μ μ₯ν μ μμ΅λλ€.
λͺ¨λ μ¬λμ νμμ΄ μλκΈ° λλ¬Έμ΄μ£ .
μλΈνμ
κ΄κ³λ₯Ό νμ
κ²μ¬κΈ°μ μ리λ extends
ν€μλ
μμ 'νμμ μ¬λμ΄λ€.'μμ 'Aλ Bμ΄λ€.'μ κ΄κ³λ μ¬λμκ²λ μ§κ΄μ μ΄μ§λ§, νμ κ²μ¬κΈ° μ μ₯μμλ μλλλ€.
μλΉμ μ¬λμ μ μ₯μν€λ ν¨μλ₯Ό μμλ‘ λ€μ΄λ³΄κ² μ΅λλ€.
class Person {
name: string
constructor(name: string) {
this.name = name
}
}
class Student {
name: string;
constructor(name: string) {
this.name = name
}
}
const person = new Person('Kim')
const student = new Student('Park')
const enterRestaurant = (p: Person) => {}
enterRestaurant(person) // ok
enterRestaurant(student) // error
Personμ μΈμ€ν΄μ€μΈ person
κ³Ό Studentμ μΈμ€ν΄μ€μΈ student
λ₯Ό enterRestaurant ν¨μμ μΈμλ‘ μ λ¬μ νμ
κ²μ¬λ₯Ό ν΅κ³Ό ν μ μμ΄μΌ ν©λλ€.
μλνλ©΄ μ§κ΄μ μΌλ‘ νμμ μ¬λμ΄κΈ° λλ¬Έμ΄μ£ .
νμ§λ§ μ΄κ²μ μ°λ¦¬μ μ§κ΄μΌ λΏ, νμ κ²μ¬λ₯Ό ν΅κ³ΌνκΈ° μν΄μ νμ κ²μ¬κΈ°μ λ ν΄λμ€μ κ΄κ³λ₯Ό μλ €μΌν©λλ€.
class Person {}
class Student extends Person {}
extends
ν€μλλ₯Ό ν΅ν΄ λμ μλΈνμ
κ΄κ³μμ λνλΌ μ μμ΅λλ€.
μ΄μ νμ κ²μ¬κΈ°λ νμκ³Ό μ¬λμ κ΄κ³λ₯Ό μ΄ν΄νμ¬ μ°λ¦¬μ μ§κ΄κ³Ό λμΌνκ² ν λΉ μ¬λΆλ₯Ό νλ¨ν μ μκ² λμμ΅λλ€.
μ¬κΈ°κΉμ§ μ½μλ€λ©΄, λκ° μμν μ μμ΅λλ€.
νμ μ€ν¬λ¦½νΈμμ νμ κ²μ¬κΈ°λ νμ μ€λ₯λ₯Ό λ΄μ§ μκ³ , μμ μ½λλ₯Ό ν΅κ³Όμν€κΈ° λλ¬Έμ λλ€.
enterRestaurant(person) // ok
enterRestaurant(student) // ok
νμ
μ€ν¬λ¦½νΈλ extends
ν€μλλ₯Ό μ¬μ©νμ§ μμλ μλΈνμ
κ΄κ³λ₯Ό μΆλ‘ ν μ μμ΅λλ€.
μ΄λ¬ν λμμ ꡬ쑰μ νμ΄νμ΄λΌκ³ ν©λλ€.
μλΈνμ κ³Ό λ€νμ±μ λν΄ μμλ΄€μΌλ―λ‘ μ°μ μ± μ μ λͺ©μΈ μλΈνμ μ μν λ€νμ±μ λν μλ―Έλ₯Ό μ§κ³ λμ΄κ°κ² μ΅λλ€.
μλΈνμ μ μν λ€νμ±μ΄λ 무μμΌκΉ?
μμμ μλΈνμ κ³Ό λ€νμ±μ μλ―Έλ₯Ό κ°κ° μμ보μμ΅λλ€.
μλΈνμ μ 'Aλ Bμ΄λ€.'μ κ΄κ³λ₯Ό λ§μ‘±νκ³ , νμ κ²μ¬κΈ°μλ 'extends' ν€μλλ‘ μλ €μΌ νλ€κ΅¬μ.
λν λ€νμ±μ΄λ 'ν κ°μ²΄κ° μ¬λ¬ νμ μ μνλ κ²'μ΄κ΅¬μ.
κ·Έλ λ€λ©΄ μλΈνμ μ μν λ€νμ±μ΄λ λ€μκ³Ό κ°μ΄ λ§ν μ μμκ² κ°μ΅λλ€.
μμ κ΄κ³(Aλ Bμ΄λ€ κ΄κ³)λ₯Ό ν΅ν΄ ν κ°μ²΄κ° μ¬λ¬ νμ
μΌλ‘ μ·¨κΈλ μ μκ² νλ κ².
μ΄λ₯Ό ν΅ν΄ μμ νμ μ μꡬνλ κ³³μ νμ νμ μ κ°μ²΄λ₯Ό μ¬μ©ν μ μκ² λμ΄, μ½λμ μ μ°μ±κ³Ό μ¬μ¬μ©μ±μ΄ λμμ§λλ€.
μ λͺ ν μμλ‘λ JAVAμμ List νμ μ ꡬνμ²΄λ‘ ArrayList, LinkedListκ° μμ§λ§,
νμ μ§μ μ ꡬνμ΄ μλ List νμ μΌλ‘ νλ€λκ²μ μκ°ν΄λ³΄μλ©΄ μ’μκ² κ°μ΅λλ€.
ꡬ쑰μ νμ΄νμ΄λ 무μμΌκΉ?
λ€μ λμμμ νμ μ€ν¬λ¦½νΈμ ꡬ쑰μ νμ΄νμ λν΄ μμ보λλ‘ νκ² μ΅λλ€.
extends
λ‘ μμ κ΄κ³λ₯Ό λͺ
μμ μΌλ‘ μμ±νμ§ μμλλ° ν΅κ³Όλλ μ΄μ λ 무μμΌκΉμ?
νμ μ€ν¬λ¦½νΈμ νμ κ²μ¬κΈ°κ° μ¬λμ μ§κ΄κ³Ό λμΌνκ² λμνλ κ²μ΄κΈ°λΌλ ν κΉμ?
μ΄ λν κ·μΉμ΄ μ‘΄μ¬ν©λλ€.
νμ μ€ν¬λ¦½νΈλ μμ κ΄κ³μ μκ΄ μμ΄ 'ꡬ쑰λ₯Ό ν΅ν΄ μλΈνμ κ΄κ³λ₯Ό μΆλ‘ 'νκΈ° λλ¬Έμ λλ€.
μμ μ΄ν΄λ³Έ μ½λλ₯Ό λ€μ λ³΄κ² μ΅λλ€.
class Person {
name: string
constructor(name: string) {
this.name = name
}
}
class Student {
name: string;
constructor(name: string) {
this.name = name
}
}
const person = new Person('Kim')
const student = new Student('Park')
const enterRestaurant = (p: Person) => {}
enterRestaurant(person) // ok
enterRestaurant(student) // error
enterRestaurant ν¨μμ νλΌλ―Έν° νμ μ Personμ λλ€.
Personμ ꡬ쑰λ λ€μκ³Ό κ°μ΅λλ€.
interface Person {
name: string
}
Studentμ ꡬ쑰 λν Personκ³Ό λμΌν©λλ€.
interface Student {
name: string
}
Personκ³Ό Studentλ λμΌν ꡬ쑰μ΄λ―λ‘ νμ κ²μ¬κΈ°λ νμ κ²μ¬λ₯Ό ν΅κ³Όμν΅λλ€.
λ κ°μ²΄λ₯Ό λΉκ΅ν λ μ΄λ¦μ΄ μ΄λ»λκ° μ€μν κ²μ΄ μλλΌ κ΅¬μ‘°λ₯Ό μ€μνκ² λ³΄λκ²
μ΄λ₯Ό ꡬ쑰μ νμ΄ν(structural typing)μ΄λΌκ³ ν©λλ€.
extends
ν€μλλ₯Ό μ¬μ©ν μμ κΈ°λ°μ 'μλΈνμ
μ μν λ€νμ±'λ³΄λ€ μ’ λ μ μ°νκ² μ¬μ©ν μ μλ κ²μ΄μ£ .
ννΈ κ΅¬μ‘°μ νμ΄νμ μμΈ μ¬νμ΄ μ‘΄μ¬νλλ°μ. κ³μν΄μ μ΄ν΄λ³΄κ² μ΅λλ€.
μμ¬ μμ± κ²μ¬λ 무μμΌκΉ?
μμ νμ μ κ°μ λ₯λ ₯μΌλ‘ μ μ νμ΅λλ€.
ν¨μμ νμ μ μ μνλκ²μ μ μν νμ μ λ₯λ ₯λ§μ ν¨μμμ μ¬μ©νκ² λ€λ κ²μ μλ―Έν©λλ€.
const enterRestaurant = (p: Person) => {}
μ ν¨μλ νλΌλ―Έν°λ‘ Personμ λ°κ³ Person νμ μ λ₯λ ₯λ§μ μ¬μ©ν¨μ μλ―Έν©λλ€.
λ°λΌμ μΆκ°μ μΈ λ₯λ ₯μ κ°μ§ κ°μ²΄λ₯Ό μ λ¬ν΄λ μκ΄ μμκ² μ λλ€.
const kim = { name: 'kim', language: 'ko' }
enterRestaurant(kim) // ok
νμ§λ§ μμ²λΌ λ³μμ κ°μ ν λΉνκ³ ν¨μμ νλΌλ―Έν°μ λ³μλ₯Ό ν λΉνλκ²μ΄ μλ,
κ°μ²΄ 리ν°λ΄ νκΈ°λ²μΌλ‘ κ°μ²΄λ₯Ό μμ±ν΄ νλΌλ―Έν°λ‘ μ§μ λκΈ°λ©΄ νμ μ€ν¬λ¦½νΈμ νμ κ²μ¬κΈ°λ νμ μλ¬λ₯Ό λ λλ€.
enterRestaurant({name: 'kim', fly: () => console.log('I can fly')}) // error
리ν°λ΄ νκΈ°λ²μΌλ‘ κ°μ²΄λ₯Ό μμ±ν κ²½μ° μ΄λ μ¬μ¬μ© λμ§ μκ³ , ν¨μ λ΄λΆμμλ§ μ¬μ©λκ² λ©λλ€.
ν¨μ λ°μμ ν΄λΉ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ΄λ¦μ΄ μκΈ° λλ¬Έμ΄μ£ .
ν¨μ λ΄λΆμμλ§ μ¬μ©λλλ°, μΆκ°μ μΈ λ₯λ ₯μ μ λ¬νλκ²μ ν¨μκ° μΆκ° λ₯λ ₯μ΄ νμν κ² μ²λΌ μ€ν΄μ μμ§κ° μμ΅λλ€.
λ°λΌμ κ°μ²΄ 리ν°λ΄μ μ§μ μ λ¬ν κ²½μ° λμ± μ격νκ² κ²μ¬νμ¬ νμ μλ¬λ₯Ό λ΄λλ‘ μμΈμ¬νμ λμμ΅λλ€.
μ΄λ₯Ό μμ¬ μμ± κ²μ¬λΌ ν©λλ€.
μ΄μ λν μ΄μ λ₯Ό κΉμ΄ μκ² μκ³ μΆμΌμ λΆμ TypeScript νμ μμ€ν λ―μ΄λ³΄κΈ°: νμ νΈνμ±μ μ°Έκ³ ν΄λ³΄μλ©΄ μ’μκ² κ°μ΅λλ€ :)
νμ μ€ν¬λ¦½νΈ νμ λ°°κ²½μμ μ΄ν΄λ³Έ ꡬ쑰μ νμ΄ν
νμ μ€ν¬λ¦½νΈμ νμ λ°°κ²½μ μ΄ν΄λ³΄λ©΄ ꡬ쑰λ§μΌλ‘ μλΈνμ κ΄κ³λ₯Ό μΆλ‘ νκ² λ μ΄μ λ₯Ό μΆμΈ‘ν μ μμ΅λλ€.
μμλ€μνΌ μλ°μ€ν¬λ¦½νΈκ° λ¨Όμ λμ€κ³ 2014λ λμ νμ μ€ν¬λ¦½νΈ 1 λ²μ μ΄ μΆμλμμ΅λλ€.
μ΄λ―Έ μλ°μ€ν¬λ¦½νΈλ‘ μλ§μ κ°μ²΄λ€μ΄ μμ±λμ΄ μμμ΅λλ€.
extends
λ‘ μλΈνμ
κ΄κ³λ₯Ό νννκΈ°μ μλ§μ νμ
μ μΆκ°λ‘ μμ±ν΄μΌλ§ ν©λλ€.
μλ°μ€ν¬λ¦½νΈμμ νμ μ€ν¬λ¦½νΈλ‘ λ§μ΄κ·Έλ μ΄μ μ νλ€μ΄ λ μ μλκ²μ΄μ£ .
λ°λΌμ νΈνμ±κ³Ό μ μ§μ λμ μ μν΄ κ΅¬μ‘°λ§ μΌμΉνλ©΄ κ°μ νμ μΌλ‘ μΆλ‘ λ μ μλλ‘ νμ μ€ν¬λ¦½νΈλ₯Ό μ μ°νκ² μ€κ³νκ² λμμ΅λλ€.
λ§λ¬΄λ¦¬
μ¬λ¬ λ€νμ± μ€ μμ§μ ν¬μ€ν μμ μ€λͺ ν μλΈνμ μ μν λ€νμ± μ λλ§ λͺ νν μ΄ν΄ νλ€λ μκ°μ΄ λλλ€.
κ·ΈλΌμλ λΆκ΅¬νκ³ μ± μ μ½κ³ μ§μμ΄ μ΄μ΄ν΄μ§λ λλμ΄ μ’μμ΅λλ€.
λ λ§μ΄ νμ©ν΄λ³΄κ³ , μκ°μ λμ΄ λ€μ μ½κ² λλ€λ©΄ λ―Έμ² μ΄ν΄νμ§λͺ»ν λ λ§μ λ€νμ±μ λν μ΄μΌκΈ°λ₯Ό μ΄ν΄ν μ μμκ² κ°μ΅λλ€.
μΆν μ±μ₯νμ¬ λ ν λ² μ½κ² λ λ μ κΈ°λν©λλ€.